package cn.arnold.sort;

import java.util.Arrays;

public class BubbleSort {

    public static void main(String[] args) {
        int[] array = {3, 14, 16, 65, 5, 10};
        sort(array);
        System.out.println("排序后：" + Arrays.toString(array));
    }


    public static void sort(int[] array) {

        int temp = 0;           // 临时变量，交换数据位置用
        boolean flag = false;     // 标识变量，每一趟是有逆序，进行了位置交换
        // 1. 总共需要 array.length-1 趟比较
        // 2. 每一趟依次需要比较 array.length-1，array.length-1-1，array.length-1-2，.... 次
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - 1 - i; j++) {
                if (array[j] > array[j + 1]) {
                    // flag置为true
                    flag = true;
                    // 逆序则交换位置
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
            System.out.println();
            // 这一趟没有发生数据交换
            if (!flag) {
                break;
            } else {
                flag = false; // !!! 重置flag，进行下一次判断
            }
            System.out.println("第" + (i + 1) + "趟后：" + Arrays.toString(array));
        }
    }
}
